package com.ymm.system.api.facade;

import com.ymm.system.api.utils.Result;

public interface SystemOrderService {
    /**
     * 取消订单 但不下架货源
     *
     * @param orderId       订单Id
     * @param opsPersonType 操作人类型，0表示货主，1表示司机，2表示客服，3表示系统，可以为空
     * @param opsPersonId   操作人Id，可以为空
     * @return 是否成功
     */
    Result<Boolean> cancelOrderWithoutPullOffCargo(Long orderId, Integer opsPersonType, Long opsPersonId, Integer orderCancelReason, String orderCancelDescription) throws Exception;

    /**
     * 取消订单 并且下架货源
     *
     * @param orderId       订单Id
     * @param opsPersonType 操作人类型，0表示货主，1表示司机，2表示客服，3表示系统，可以为空
     * @param opsPersonId   操作人Id，可以为空
     * @return 是否成功
     */
    Result<Boolean> cancelOrderWithPullOffCargo(Long orderId, Integer opsPersonType, Long opsPersonId, Integer orderCancelReason, String orderCancelDescription) throws Exception;

    Result<Boolean> cancelOrderByBackstage(Long orderId, Integer orderCancelType, Integer orderCancelReason, String orderCancelDescription);

    /**
     * 确认收货
     *
     * @param orderId       订单Id
     * @param opsPersonType 操作人类型，0表示货主，1表示司机，2表示客服，3表示系统，可以为空
     * @param opsPersonId   操作人Id，可以为空
     * @return 是否成功
     */
    Result<Boolean> confirmReceipt(Long orderId, Integer opsPersonType, Long opsPersonId) throws Exception;
}
